
package com.saodisheng.service;

import com.jfinal.kit.Ret;
import com.saodisheng.model.AuthCode;

/**
 * description:
 * 授权码业务
 * 用于一切需要授权的业务，例如：
 * 1：邮件激活
 * 2：密码找回
 * 3：未来一切需要授权码的场景
 *
 * @author 扫地生_saodisheng
 * @date 2022/1/29
 */
public interface AuthCodeService {
	/**
	 * 创建注册激活授权码，一个小时后过期，3600 秒
	 */
	String createRegActivateAuthCode(int accountId);

	/**
	 * 创建密码找回授权码，一个小时后过期，3600 秒
	 */
	String createRetrievePasswordAuthCode(int accountId);

	/**
	 * 获取授权码，授权码只能使用一次，在被获取后会被立即删除
	 */
	AuthCode getAuthCode(String authCodeId);

	/**
	 * 看一眼授权码，未过期时则不删除
	 */
	Ret peekAuthCode(String id);
	
	/**
	 * 主动清除未使用过的过期授权码
	 * 不用经常调用，因为授权码在第一次使用时会自动删除，过期的未删除的授权码仅是未使用过的
	 */
	int clearExpiredAuthCode();
}







